2
תגובות
MySQL GROUP BY
פתח
ldbrgr
,
זה קצת מסובך להסביר אני מקווה שתבינו.
הטבלה שלי נראת ככה:
אני רוצה לשלוף את כל השורות לפי list_id יחודי, אבל אם השורה לא בlist_id (כאילו list_id=0) אז שישלוף גם אותם.
השאילתא
מחזירה את זה:
אני רוצה שאילתא שתחזיר את כל השורות שהlist_id=0 ושהlist_id יחודי.
זה כאילו שתי שאילתות..
והתוצאה צריכה להיות ככה:
איך אני עושה את זה בשאילתא אחת?
הטבלה שלי נראת ככה:
id |title |list_id
1 |power |0
2 |goose |0
3 |Romeo |0
4 |riles |0
5 |pros1 |1
6 |pros2 |1
7 |loop1 |2
8 |loop2 |2
9 |loop3 |2
10 |indoor |0
1 |power |0
2 |goose |0
3 |Romeo |0
4 |riles |0
5 |pros1 |1
6 |pros2 |1
7 |loop1 |2
8 |loop2 |2
9 |loop3 |2
10 |indoor |0
אני רוצה לשלוף את כל השורות לפי list_id יחודי, אבל אם השורה לא בlist_id (כאילו list_id=0) אז שישלוף גם אותם.
השאילתא
SELECT * FROM `tbl` GROUP BY `list_id`;
מחזירה את זה:
id |title |list_id
1 |power |0
5 |pros1 |1
9 |loop3 |2
1 |power |0
5 |pros1 |1
9 |loop3 |2
אני רוצה שאילתא שתחזיר את כל השורות שהlist_id=0 ושהlist_id יחודי.
זה כאילו שתי שאילתות..
SELECT * FROM `tbl` WHERE `list_id` <> 0 GROUP BY `list_id`;
SELECT * FROM `tbl` WHERE `list_id` = 0;
SELECT * FROM `tbl` WHERE `list_id` = 0;
והתוצאה צריכה להיות ככה:
id |title |list_id
1 |power |0
2 |goose |0
3 |Romeo |0
4 |riles |0
5 |pros1 |1
7 |loop1 |2
10 |indoor |0
1 |power |0
2 |goose |0
3 |Romeo |0
4 |riles |0
5 |pros1 |1
7 |loop1 |2
10 |indoor |0
איך אני עושה את זה בשאילתא אחת?
2 תשובות
אחרי שחשבתי על זה קצת.. מצאתי תשובה. תודה!!